package com.qf.lanzhou.shop.api.dao;

import com.qf.lanzhou.shop.pojo.entity.ParentsOrder;
import com.qf.lanzhou.shop.pojo.entity.ReceivingAddress;
import com.qf.lanzhou.shop.pojo.entity.SonOrder;
import com.qf.lanzhou.shop.pojo.qo.OrderAndAddress;
import com.qf.lanzhou.shop.pojo.qo.OrderParm;
import jdk.nashorn.internal.runtime.ListAdapter;

import java.util.List;

/**
 * 订单生成
 *
 * @author jack
 */
public interface OrderMapper {
    /**
     * 生成父订单
     *
     * @param parentsOrder
     * @return
     */
    int instrParents(ParentsOrder parentsOrder);

    /**
     *生成子订单
     * @param sonOrder
     * @return
     */
    int instrSon(SonOrder sonOrder);

    /**
     * 通过ID获取父订单
     * @param id
     * @return
     */
    ParentsOrder selectParentsOrder(Long id);

    /**
     * 通过父订单ID获取所有子订单
     * @param parentsOrderId
     * @return
     */
    List<SonOrder> selectSonOrder(Long parentsOrderId);

    /**
     * 通过傻逼东辉购物车里面的商品ID获取订单实体类信息
     * @param orderParm
     * @return
     */
    List<SonOrder> selectSonOrderByCart(OrderParm orderParm);

    /**
     * 根据订单号改变订单支付状态
     * @param id
     */
    int undateOrderStatus(Long id);

    /**
     * 通过用户ID查询已支付订单
     * @param id 用户ID
     * @return 已支付订单
     */
    SonOrder selectPaid(Long id);

    /**
     * 通过用户ID查询未支付订单
     * @param id
     * @return
     */
    SonOrder selectUnpaid(Long id);

    /**
     * 通过父ID查询地址信息
     * @return
     */
    ReceivingAddress selectAddressByParentsId(Long id);

    /**
     * 通过子订单ID获取父订单
     * @param id
     * @return
     */
    ParentsOrder selectBySonOrderId(Long id);

    /**
     * 通过子订单ID获取子订单
     * @param id
     * @return
     */
    SonOrder selectSonOrderById(Long id);

    /**
     * 选择地址
     * @param orderAndAddress
     * @return
     */
    int selectAddress(OrderAndAddress orderAndAddress);

    /**
     * 通过卖家ID查询卖家名
     * @param id 卖家ID
     * @return
     */
    String selectSellerNameBySellerId(Long id);
}
